diff --git a/system/helpers/array_helper.php b/system/helpers/array_helper.php
index daa21a3..075a31f 100644
--- a/system/helpers/array_helper.php
+++ b/system/helpers/array_helper.php
@@ -1,4 +1,4 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -79,7 +79,7 @@
 /**
  * Elements
  *
- * Returns only the array items specified. Will return a default value if
+ * Returns only the array items specified.  Will return a default value if
  * it is not set.
  *
  * @access	public
@@ -93,12 +93,12 @@
 	function elements($items, $array, $default = FALSE)
 	{
 		$return = array();
-
+		
 		if ( ! is_array($items))
 		{
 			$items = array($items);
 		}
-
+		
 		foreach ($items as $item)
 		{
 			if (isset($array[$item]))
diff --git a/system/helpers/captcha_helper.php b/system/helpers/captcha_helper.php
index 130c2c7..19ec0c7 100644
--- a/system/helpers/captcha_helper.php
+++ b/system/helpers/captcha_helper.php
@@ -1,4 +1,4 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -106,8 +106,8 @@
 		// Do we have a "word" yet?
 		// -----------------------------------
 
-	  if ($word == '')
-	  {
+	   if ($word == '')
+	   {
 			$pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
 
 			$str = '';
@@ -117,7 +117,7 @@
 			}
 
 			$word = $str;
-	  }
+	   }
 
 		// -----------------------------------
 		// Determine angle and position
@@ -143,7 +143,7 @@
 		}
 
 		// -----------------------------------
-		// Assign colors
+		//  Assign colors
 		// -----------------------------------
 
 		$bg_color		= imagecolorallocate ($im, 255, 255, 255);
@@ -153,13 +153,13 @@
 		$shadow_color	= imagecolorallocate($im, 255, 240, 240);
 
 		// -----------------------------------
-		// Create the rectangle
+		//  Create the rectangle
 		// -----------------------------------
 
 		ImageFilledRectangle($im, 0, 0, $img_width, $img_height, $bg_color);
 
 		// -----------------------------------
-		// Create the spiral pattern
+		//  Create the spiral pattern
 		// -----------------------------------
 
 		$theta		= 1;
@@ -183,7 +183,7 @@
 		}
 
 		// -----------------------------------
-		// Write the text
+		//  Write the text
 		// -----------------------------------
 
 		$use_font = ($font_path != '' AND file_exists($font_path) AND function_exists('imagettftext')) ? TRUE : FALSE;
@@ -219,13 +219,13 @@
 
 
 		// -----------------------------------
-		// Create the border
+		//  Create the border
 		// -----------------------------------
 
 		imagerectangle($im, 0, 0, $img_width-1, $img_height-1, $border_color);
 
 		// -----------------------------------
-		// Generate the image
+		//  Generate the image
 		// -----------------------------------
 
 		$img_name = $now.'.jpg';
diff --git a/system/helpers/cookie_helper.php b/system/helpers/cookie_helper.php
index 31d2d31..7cee028 100644
--- a/system/helpers/cookie_helper.php
+++ b/system/helpers/cookie_helper.php
@@ -1,4 +1,4 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -37,7 +37,7 @@
  * @param	mixed
  * @param	string	the value of the cookie
  * @param	string	the number of seconds until expiration
- * @param	string	the cookie domain. Usually: .yourdomain.com
+ * @param	string	the cookie domain.  Usually:  .yourdomain.com
  * @param	string	the cookie path
  * @param	string	the cookie prefix
  * @return	void
@@ -85,7 +85,7 @@
  * Delete a COOKIE
  *
  * @param	mixed
- * @param	string	the cookie domain. Usually: .yourdomain.com
+ * @param	string	the cookie domain.  Usually:  .yourdomain.com
  * @param	string	the cookie path
  * @param	string	the cookie prefix
  * @return	void
diff --git a/system/helpers/date_helper.php b/system/helpers/date_helper.php
index f3f01f7..553e8d7 100644
--- a/system/helpers/date_helper.php
+++ b/system/helpers/date_helper.php
@@ -1,4 +1,4 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -69,7 +69,7 @@
  * This function is identical to PHPs date() function,
  * except that it allows date codes to be formatted using
  * the MySQL style, where each code letter is preceded
- * with a percent sign: %Y %m %d etc...
+ * with a percent sign:  %Y %m %d etc...
  *
  * The benefit of doing dates this way is that you don't
  * have to worry about escaping your text letters that
@@ -366,7 +366,7 @@
 		$time = str_replace(' ', '', $time);
 
 		// YYYYMMDDHHMMSS
-		return mktime(
+		return  mktime(
 						substr($time, 8, 2),
 						substr($time, 10, 2),
 						substr($time, 12, 2),
@@ -394,7 +394,7 @@
 {
 	function unix_to_human($time = '', $seconds = FALSE, $fmt = 'us')
 	{
-		$r = date('Y', $time).'-'.date('m', $time).'-'.date('d', $time).' ';
+		$r  = date('Y', $time).'-'.date('m', $time).'-'.date('d', $time).' ';
 
 		if ($fmt == 'us')
 		{
@@ -451,18 +451,18 @@
 
 		$ex = explode("-", $split['0']);
 
-		$year = (strlen($ex['0']) == 2) ? '20'.$ex['0'] : $ex['0'];
-		$month = (strlen($ex['1']) == 1) ? '0'.$ex['1'] : $ex['1'];
-		$day  = (strlen($ex['2']) == 1) ? '0'.$ex['2'] : $ex['2'];
+		$year  = (strlen($ex['0']) == 2) ? '20'.$ex['0'] : $ex['0'];
+		$month = (strlen($ex['1']) == 1) ? '0'.$ex['1']  : $ex['1'];
+		$day   = (strlen($ex['2']) == 1) ? '0'.$ex['2']  : $ex['2'];
 
 		$ex = explode(":", $split['1']);
 
 		$hour = (strlen($ex['0']) == 1) ? '0'.$ex['0'] : $ex['0'];
-		$min = (strlen($ex['1']) == 1) ? '0'.$ex['1'] : $ex['1'];
+		$min  = (strlen($ex['1']) == 1) ? '0'.$ex['1'] : $ex['1'];
 
 		if (isset($ex['2']) && preg_match('/[0-9]{1,2}/', $ex['2']))
 		{
-			$sec = (strlen($ex['2']) == 1) ? '0'.$ex['2'] : $ex['2'];
+			$sec  = (strlen($ex['2']) == 1) ? '0'.$ex['2'] : $ex['2'];
 		}
 		else
 		{
@@ -478,7 +478,7 @@
 				$hour = $hour + 12;
 
 			if (substr($ampm, 0, 1) == 'a' AND $hour == 12)
-				$hour = '00';
+				$hour =  '00';
 
 			if (strlen($hour) == 1)
 				$hour = '0'.$hour;
@@ -537,7 +537,7 @@
 /**
  * Timezones
  *
- * Returns an array of timezones. This is a helper function
+ * Returns an array of timezones.  This is a helper function
  * for various other ones in this library
  *
  * @access	public
diff --git a/system/helpers/directory_helper.php b/system/helpers/directory_helper.php
index 7579014..38347fa 100644
--- a/system/helpers/directory_helper.php
+++ b/system/helpers/directory_helper.php
@@ -1,4 +1,4 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -31,7 +31,7 @@
  * Create a Directory Map
  *
  * Reads the specified directory and builds an array
- * representation of it. Sub-folders contained with the
+ * representation of it.  Sub-folders contained with the
  * directory will be mapped as well.
  *
  * @access	public
diff --git a/system/helpers/download_helper.php b/system/helpers/download_helper.php
index e6752db..1145688 100644
--- a/system/helpers/download_helper.php
+++ b/system/helpers/download_helper.php
@@ -1,4 +1,4 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/helpers/email_helper.php b/system/helpers/email_helper.php
index 8fcdad9..651aef4 100644
--- a/system/helpers/email_helper.php
+++ b/system/helpers/email_helper.php
@@ -1,4 +1,4 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/helpers/file_helper.php b/system/helpers/file_helper.php
index 2bd8bce..3931667 100644
--- a/system/helpers/file_helper.php
+++ b/system/helpers/file_helper.php
@@ -1,4 +1,4 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -311,7 +311,7 @@
 					$fileinfo['readable'] = is_readable($file);
 					break;
 				case 'writable':
-					// There are known problems using is_weritable on IIS. It may not be reliable - consider fileperms()
+					// There are known problems using is_weritable on IIS.  It may not be reliable - consider fileperms()
 					$fileinfo['writable'] = is_writable($file);
 					break;
 				case 'executable':
diff --git a/system/helpers/form_helper.php b/system/helpers/form_helper.php
index a6dfdb2..2925d3c 100644
--- a/system/helpers/form_helper.php
+++ b/system/helpers/form_helper.php
@@ -1,4 +1,4 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -114,7 +114,7 @@
 /**
  * Hidden Input Field
  *
- * Generates hidden fields. You can pass a simple key/value string or an associative
+ * Generates hidden fields.  You can pass a simple key/value string or an associative
  * array with multiple values.
  *
  * @access	public
@@ -540,7 +540,7 @@
 /**
  * Fieldset Tag
  *
- * Used to produce <fieldset><legend>text</legend>. To close fieldset
+ * Used to produce <fieldset><legend>text</legend>.  To close fieldset
  * use form_fieldset_close()
  *
  * @access	public
@@ -663,7 +663,7 @@
  * Form Value
  *
  * Grabs a value from the POST array for the specified field so you can
- * re-populate an input field or textarea. If Form Validation
+ * re-populate an input field or textarea.  If Form Validation
  * is active it retrieves the info from the validation class
  *
  * @access	public
@@ -858,7 +858,7 @@
 /**
  * Form Error
  *
- * Returns the error for a specific form field. This is a helper for the
+ * Returns the error for a specific form field.  This is a helper for the
  * form validation class.
  *
  * @access	public
@@ -885,7 +885,7 @@
 /**
  * Validation Error String
  *
- * Returns all the errors associated with a form submission. This is a helper
+ * Returns all the errors associated with a form submission.  This is a helper
  * function for the form validation class.
  *
  * @access	public
@@ -1034,17 +1034,17 @@
 
 		// We set this as a variable since we're returning by reference.
 		$return = FALSE;
-
+		
 		if (FALSE !== ($object = $CI->load->is_loaded('form_validation')))
 		{
 			if ( ! isset($CI->$object) OR ! is_object($CI->$object))
 			{
 				return $return;
 			}
-
+			
 			return $CI->$object;
 		}
-
+		
 		return $return;
 	}
 }
diff --git a/system/helpers/html_helper.php b/system/helpers/html_helper.php
index bd66bc2..080f622 100644
--- a/system/helpers/html_helper.php
+++ b/system/helpers/html_helper.php
@@ -1,4 +1,4 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -30,7 +30,7 @@
 /**
  * Heading
  *
- * Generates an HTML heading tag. First param is the data.
+ * Generates an HTML heading tag.  First param is the data.
  * Second param is the size of the heading tag.
  *
  * @access	public
@@ -114,7 +114,7 @@
 		// Set the indentation based on the depth
 		$out = str_repeat(" ", $depth);
 
-		// Were any attributes submitted? If so generate a string
+		// Were any attributes submitted?  If so generate a string
 		if (is_array($attributes))
 		{
 			$atts = '';
@@ -128,7 +128,7 @@
 		// Write the opening list tag
 		$out .= "<".$type.$attributes.">\n";
 
-		// Cycle through the list elements. If an array is
+		// Cycle through the list elements.  If an array is
 		// encountered we will recursively call _list()
 
 		static $_last_list_item = '';
@@ -244,7 +244,7 @@
  * Generates a page document type declaration
  *
  * Valid options are xhtml-11, xhtml-strict, xhtml-trans, xhtml-frame,
- * html4-strict, html4-trans, and html4-frame. Values are saved in the
+ * html4-strict, html4-trans, and html4-frame.  Values are saved in the
  * doctypes config file.
  *
  * @access	public
diff --git a/system/helpers/inflector_helper.php b/system/helpers/inflector_helper.php
index 2352b64..c7c113b 100644
--- a/system/helpers/inflector_helper.php
+++ b/system/helpers/inflector_helper.php
@@ -1,4 +1,4 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -43,9 +43,9 @@
 	{
 		$str = trim($str);
 		$end = substr($str, -3);
-
-    $str = preg_replace('/(.*)?([s|c]h)es/i','$1$2',$str);
-
+        
+        $str = preg_replace('/(.*)?([s|c]h)es/i','$1$2',$str);
+        
 		if (strtolower($end) == 'ies')
 		{
 			$str = substr($str, 0, strlen($str)-3).(preg_match('/[a-z]/',$end) ? 'y' : 'Y');
@@ -83,8 +83,8 @@
 if ( ! function_exists('plural'))
 {
 	function plural($str, $force = FALSE)
-	{
-    $str = trim($str);
+	{   
+        $str = trim($str);
 		$end = substr($str, -1);
 
 		if (preg_match('/y/i',$end))
@@ -95,7 +95,7 @@
 		}
 		elseif (preg_match('/h/i',$end))
 		{
-      if(preg_match('/^[c|s]h$/i',substr($str, -2)))
+            if(preg_match('/^[c|s]h$/i',substr($str, -2)))
 			{
 				$str .= 'es';
 			}
diff --git a/system/helpers/language_helper.php b/system/helpers/language_helper.php
index e768b45..ac0d69d 100644
--- a/system/helpers/language_helper.php
+++ b/system/helpers/language_helper.php
@@ -1,4 +1,4 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/helpers/number_helper.php b/system/helpers/number_helper.php
index fc967e8..6117775 100644
--- a/system/helpers/number_helper.php
+++ b/system/helpers/number_helper.php
@@ -1,4 +1,4 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/helpers/path_helper.php b/system/helpers/path_helper.php
index 02b14e8..ffcf468 100644
--- a/system/helpers/path_helper.php
+++ b/system/helpers/path_helper.php
@@ -1,4 +1,4 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -39,7 +39,7 @@
 {
 	function set_realpath($path, $check_existance = FALSE)
 	{
-		// Security check to make sure the path is NOT a URL. No remote file inclusion!
+		// Security check to make sure the path is NOT a URL.  No remote file inclusion!
 		if (preg_match("#^(http:\/\/|https:\/\/|www\.|ftp|[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})#i", $path))
 		{
 			show_error('The path you submitted must be a local server path, not a URL');
diff --git a/system/helpers/security_helper.php b/system/helpers/security_helper.php
index a4df656..678dac8 100644
--- a/system/helpers/security_helper.php
+++ b/system/helpers/security_helper.php
@@ -1,4 +1,4 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -119,7 +119,7 @@
 {
 	function encode_php_tags($str)
 	{
-		return str_replace(array('<?php', '<?PHP', '<?', '?>'), array('&lt;?php', '&lt;?PHP', '&lt;?', '?&gt;'), $str);
+		return str_replace(array('<?php', '<?PHP', '<?', '?>'),  array('&lt;?php', '&lt;?PHP', '&lt;?', '?&gt;'), $str);
 	}
 }
 
diff --git a/system/helpers/smiley_helper.php b/system/helpers/smiley_helper.php
index 22ca4df..6d88893 100644
--- a/system/helpers/smiley_helper.php
+++ b/system/helpers/smiley_helper.php
@@ -1,4 +1,4 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -30,7 +30,7 @@
 /**
  * Smiley Javascript
  *
- * Returns the javascript required for the smiley insertion. Optionally takes
+ * Returns the javascript required for the smiley insertion.  Optionally takes
  * an array of aliases to loosely couple the smiley array to the view.
  *
  * @access	public
@@ -157,7 +157,7 @@
 		foreach ($smileys as $key => $val)
 		{
 			// Keep duplicates from being used, which can happen if the
-			// mapping array contains multiple identical replacements. For example:
+			// mapping array contains multiple identical replacements.  For example:
 			// :-) and :) might be replaced with the same image so both smileys
 			// will be in the array.
 			if (isset($used[$smileys[$key][0]]))
@@ -204,7 +204,7 @@
 		}
 
 		// Add a trailing slash to the file path if needed
-		$image_url = preg_replace("/(.+?)\/*$/", "\\1/", $image_url);
+		$image_url = preg_replace("/(.+?)\/*$/", "\\1/",  $image_url);
 
 		foreach ($smileys as $key => $val)
 		{
@@ -231,13 +231,13 @@
 	{
 		if (defined('ENVIRONMENT') AND file_exists(APPPATH.'config/'.ENVIRONMENT.'/smileys.php'))
 		{
-		  include(APPPATH.'config/'.ENVIRONMENT.'/smileys.php');
+		    include(APPPATH.'config/'.ENVIRONMENT.'/smileys.php');
 		}
 		elseif (file_exists(APPPATH.'config/smileys.php'))
 		{
 			include(APPPATH.'config/smileys.php');
 		}
-
+		
 		if (isset($smileys) AND is_array($smileys))
 		{
 			return $smileys;
diff --git a/system/helpers/string_helper.php b/system/helpers/string_helper.php
index 9f730bd..7765bba 100644
--- a/system/helpers/string_helper.php
+++ b/system/helpers/string_helper.php
@@ -1,4 +1,4 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -150,7 +150,7 @@
 /**
  * Reduce Multiples
  *
- * Reduces multiple instances of a particular character. Example:
+ * Reduces multiple instances of a particular character.  Example:
  *
  * Fred, Bill,, Joe, Jimmy
  *
@@ -187,7 +187,7 @@
  * Useful for generating passwords or hashes.
  *
  * @access	public
- * @param	string	type of random string. basic, alpha, alunum, numeric, nozero, unique, md5, encrypt and sha1
+ * @param	string	type of random string.  basic, alpha, alunum, numeric, nozero, unique, md5, encrypt and sha1
  * @param	integer	number of characters
  * @return	string
  */
@@ -245,7 +245,7 @@
 /**
  * Alternator
  *
- * Allows strings to be alternated. See docs...
+ * Allows strings to be alternated.  See docs...
  *
  * @access	public
  * @param	string (as many parameters as needed)
diff --git a/system/helpers/text_helper.php b/system/helpers/text_helper.php
index 7d62125..33d7fa2 100644
--- a/system/helpers/text_helper.php
+++ b/system/helpers/text_helper.php
@@ -1,4 +1,4 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -63,7 +63,7 @@
 /**
  * Character Limiter
  *
- * Limits the string based on the character count. Preserves complete words
+ * Limits the string based on the character count.  Preserves complete words
  * so the character count may not be exactly as specified.
  *
  * @access	public
@@ -133,7 +133,7 @@
 				*/
 				if (count($temp) == 1)
 				{
-					$out .= '&#'.array_shift($temp).';';
+					$out  .= '&#'.array_shift($temp).';';
 					$count = 1;
 				}
 
@@ -389,7 +389,7 @@
 /**
  * Word Wrap
  *
- * Wraps text at the specified character. Maintains the integrity of words.
+ * Wraps text at the specified character.  Maintains the integrity of words.
  * Anything placed between {unwrap}{/unwrap} will not be word wrapped, nor
  * will URLs.
  *
@@ -429,7 +429,7 @@
 
 		// Use PHP's native function to do the initial wordwrap.
 		// We set the cut flag to FALSE so that any individual words that are
-		// too long get left alone. In the next step we'll deal with them.
+		// too long get left alone.  In the next step we'll deal with them.
 		$str = wordwrap($str, $charlim, "\n", FALSE);
 
 		// Split the string into individual lines of text and cycle through them
diff --git a/system/helpers/typography_helper.php b/system/helpers/typography_helper.php
index 0cd6673..19b4eec 100644
--- a/system/helpers/typography_helper.php
+++ b/system/helpers/typography_helper.php
@@ -1,4 +1,4 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/helpers/url_helper.php b/system/helpers/url_helper.php
index 8e93744..d0516ce 100644
--- a/system/helpers/url_helper.php
+++ b/system/helpers/url_helper.php
@@ -1,4 +1,4 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -286,7 +286,7 @@
 			{
 				foreach ($attributes as $key => $val)
 				{
-					$x[] = ' '.$key.'="';
+					$x[] =  ' '.$key.'="';
 					for ($i = 0; $i < strlen($val); $i++)
 					{
 						$x[] = "|".ord(substr($val, $i, 1));
@@ -363,7 +363,7 @@
  *
  * Automatically links URL and Email addresses.
  * Note: There's a bit of extra code here to deal with
- * URLs or emails that end in a period. We'll strip these
+ * URLs or emails that end in a period.  We'll strip these
  * off and add them after the link.
  *
  * @access	public
diff --git a/system/helpers/xml_helper.php b/system/helpers/xml_helper.php
index 2219d66..cdd81ad 100644
--- a/system/helpers/xml_helper.php
+++ b/system/helpers/xml_helper.php
@@ -1,4 +1,4 @@
-<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -46,7 +46,7 @@
 
 		if ($protect_all === TRUE)
 		{
-			$str = preg_replace("/&(\w+);/", "$temp\\1;", $str);
+			$str = preg_replace("/&(\w+);/",  "$temp\\1;", $str);
 		}
 
 		$str = str_replace(array("&","<",">","\"", "'", "-"),
